<?php 

function insertQuery($tables, $keyReferences = null){
		
	$postkeys = array_keys($_POST);

	// INITIALIZE ARRAYS
	$rows = array(mysql_fetch_array(mysql_query("SELECT * FROM $tables[0]"), MYSQL_ASSOC));
	$insertKeys = array("INSERT INTO  $tables[0] (");
	$insertValues = array("VALUES (");

	// COMPLETE ARRAYS
	for($i = 1; $i < count($tables); $i++){
		$temp = mysql_fetch_array(mysql_query("SELECT * FROM $tables[$i]"), MYSQL_ASSOC);
		array_push($rows, $temp);
		array_push($insertKeys, "INSERT INTO $tables[$i] (");
		array_push($insertValues, "VALUES (");
	}
	
	foreach($postkeys as $k){
		$newValue = "'".$_POST[$k]."'";
		if(trim($_POST[$k]) == '') $newValue = 'NULL';
		
		for($i = 0; $i < count($tables); $i++){
			if(array_key_exists($k, $rows[$i])){
				$insertKeys[$i] = $insertKeys[$i]."$k, ";
				$insertValues[$i] = $insertValues[$i]."$newValue, ";	
			}
		}
	}
	
	$insertID = null;
	
	for($i = 0; $i < count($tables); $i++){
		if($insertID != null && $keyReferences != null && array_key_exists($tables[$i], $keyReferences)){
			$otherTableNb = $keyReferences[$tables[$i]];
			$tempKeys = array_keys($rows[$otherTableNb]);
			$insertKeys[$i] = $insertKeys[$i]."$tempKeys[0], ";
			$insertValues[$i] = $insertValues[$i]."$insertID[$otherTableNb], ";
		}
		$insertKeys[$i] = substr_replace($insertKeys[$i], ') ', strlen($insertKeys[$i])-2);	//REMOVES LAST COMMA BEFORE ADDING ')'
		$insertValues[$i] = substr_replace($insertValues[$i], ')', strlen($insertValues[$i])-2);	//REMOVES LAST COMMA BEFORE ADDING ')'		
		if (!mysql_query($insertKeys[$i].$insertValues[$i])){
			echo "Save Failed: $insertKeys[$i]$insertValues[$i] <br />" . mysql_error() . "<br /> <br />";
			return false;
		}
		$temp = array($i => mysql_insert_id());
		if($insertID == null) $insertID = $temp;
		else $insertID = array_merge($insertID, $temp);
	}
	return true;
}

?>